package com.le.tester.book.effectivejava3rdchinese.articlethirtythree;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * createTime：2022/8/18 15:12
 * description：优先考虑类型安全的异构容器
 */
public class Favorites {


    private Map<Class<?>, Object> favorites = new HashMap<>();

    public <T> void putFavorite(Class<T> type, T instance) {
        favorites.put(Objects.requireNonNull(type), instance);
    }

    public <T> T getFavorite(Class<T> type) {
        return type.cast(favorites.get(type));
    }


    //first method
//    public <T> void putFavorites(Class<T> type, T instance) {
//    }
//
//
//    public <T> T getFavorites(Class<T> type) {
//        return null;
//    }
//
//
//    public static void main(String[] args) {
//        Favorites f = new Favorites();
//        f.putFavorites(String.class, "java");
//
//        f.putFavorites(Integer.class, 1);
//
//        f.putFavorites(Class.class, Favorites.class);
//
//        String favorites = f.getFavorites(String.class);
//
//        Integer favorites1 = f.getFavorites(Integer.class);
//
//        Class favorites2 = f.getFavorites(Class.class);

    public static void main(String[] args) {
//        String b = DateTimeFormatter.ofPattern("B").format(LocalDateTime.now());
//        System.out.println(b);
    }
}
